package observer.example;

/**
 * 抽象通知者，持有保存所有通知者的集合
 * 往往提供接口增删通知者的数量
 * @author Chen Guang
 * @date 2019/4/9 0009 下午 15:45
 */
public interface Subject {
    /**
     * 增加观察者
     * @param observer 观察者
     */
    void attach(Observer observer);

    /**
     * 删除观察者
     * @param observer 观察者
     */
    void detach(Observer observer);

    /**
     * 通知方法
     */
    void notifyObserver();

    /**
     * 获取通知者状态
     * @return Str
     */
    String getSubjectState();

    /**
     * 设置通知者状态
     * @param str 状态
     */
    void setSubjectState(String str);
}
